/* O codigo esta com erros pois falta relacionar esta classe com o jogo de xadrez, colocar parametros corretos nos
metodos. Nao sei se tudo oq tem aqui vai ser util e se vai precisar de mais coisas, mas eu segui um exemplo 
na internet de um programinha que era um chat tipo msn/icq e funcionou, se precisar eu tenho esse exemplo
funcionando aqui no computador */


package xadrez.controller;

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Server {
//    private ObjectOutputStream output; //envia dados para fora
//    private ObjectInputStream input;    //recebe dados
//    private ServerSocket server;    //permite colocar programa em rede
//    private Socket connection;  //faz a conexao entre o servidor e os outros PCs
//    
//    public Server() {
//        //nao sei oq colocar aqui
//    }
//    
//    //servidor
//    public void startRunning() {
//        try {
//            server = new ServerSocket(6789, 100);   //porta 6789 de exemplo, aguenta ate 100 pessoas ao mesmo tempo
//            while (true) {
//                try {
//                    waitForConnection();            //espera por uma conexao
//                    setupStreams();                 //seta os fluxos in e out
//                    whilePlaying();                //faz jogada ou envia mensagem de erro
//                } catch (EOFException eofException) {
//                    showMessage("\n Server ended the connection");
//                } finally {
//                    closeCrap();                    //fecha os fluxos e a conexao
//                }
//            }
//        } catch (IOException ioException) {
//            ioException.printStackTrace();
//        }
//    }
//    
//    //wait for connection, then display information
//    private void waitForConnection() throws IOException {
//        showMessage(" Waiting for someone to connect...\n");
//        connection = server.accept(); //aceita a conexao
//        showMessage(" Now connected to " + connection.getInetAddress().getHostName());
//    }
//
//    private void setupStreams() throws IOException {
//        output = new ObjectOutputStream(connection.getOutputStream());
//        output.flush();                     //limpa dados que ficaram para tras
//        input = new ObjectInputStream(connection.getInputStream());
//        showMessage("\nStreams are now setup! \n");
//    }
//
//    //durante o jogo
//    private void whilePlaying() throws IOException {
//        //se chegou ate aqui, vc esta conectado
//        //no programa de chat tinha um do-while aqui que ficava tentando ler uma mensagem ate ser digitado server-end
//        enviarObjeto(algum_objeto);
//            try {
//                //tentar ler um objeto com input.readObject();
//            } catch (ClassNotFoundException classNotFoundException) {
//                showMessage(" Nao sei o que o usuario fez");
//            }
//        
//    }
//
//    //fecha os fluxos/streams e sockets
//    private void closeCrap() {
//        showMessage("\n Closing connections... \n");
//        try {
//            output.close();
//            input.close();
//            connection.close();
//        } catch (IOException ioException) {
//            ioException.printStackTrace();
//        }
//    }
//    
//    //atualiza algo na tela
//    private void showMessage(final String text) {
//        SwingUtilities.invokeLater(
//                new Runnable()
//        {
//            public void run() {
//                //tela.append(text); // mostra alguma mensagem na tela [tela poderia alguma area de texto, log, ...]
//            }
//        }
//        );
//    }
//    
//    //envia coisas para o cliente
//    private void enviarObjeto( /*precisa de algum objeto como parametro*/ ) {
//        try {
//            output.writeObject("SERVER - " + algum_objeto); //no programa de chat, vc enviava uma mensagem aqui
//            output.flush();
//            showMessage("\nSERVER: " + algum_objeto);
//        } catch (IOException ioException) {
//            //tela.append("\n ERROR! o objeto nao pode ser enviado");
//        }
//    }
}
